МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра ЗІ
Лабороторна робота №1
Знайомство з інтегрованим середовищем розробки
AVR Studio та програмою симуляції Proteus.
Написання та відладка простих програм
для AVR-мікроконтролерів
з курсу
"МІКРОПРОЦЕСОРНІ ПРИСТРОЇ"
Варіант № 14
Мета роботи: ознайомитись з послідовністю створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR в програмах AVR Studio та Proteus 7.
Завдання:
1. Домашня підготовка до роботи
Вивчити теоретичний матеріал.
Вивчити основні властивості МК необхідні для виконання лабораторної роботи.
Підготовити програму функціонування охоронної системи згідно індивідуального завдання.
2. Виконати в лабораторії
Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
В режимі покрокової відладки переконатися в правильності роботи програми, перевірити дотримання заданих в завданні часових параметрів.
Відкрити файл LR_1.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи. У випадку виявлення відхилень в роботі внести потрібні виправлення.
№
Кількість охоронних
шлейфів з НРЗ давачами
Кількість охоронних
шлейфів з НЗМ давачами
Виводи для підкл.
охоронних
шлейфів з НРЗ давачами
Виводи для підкл.
охоронних
шлейфів з НЗМ давачами
Період
опитування
шлейфів T_Scan,
с
Час постановки та зняття з охорони T_Alarm,
с
Частота
імпульсів сирени та світлодіода F_Blick,
Гц
Вивід для підкл. світлодіода
Вивід для підкл. сирени
14.
0
4
-//-
PD0, PD1, PD2, PD3
0.085
4.3
330
PB5
PB7
Лістинг програми:
.include <2313def.inc>
.def temp = r16
.def d_mask = r17
.def b_mask = r18
.def Delay1=r20
.def Delay2=r21
.def Delay3=r22
.equ T_Scan=509997 ; T_scan time 0.085 s
.equ T_Alarm=5159997 ; T_Alarm time 4.3 s
.equ T_Blick=3601 ; T_Blick time 1/330
.cseg
.org 0
ldi r16, 0xdf
out spl, r16 ; ініціалізація стеку
rcall InitIO ; ініціалізація вводів/виводів
;чеккаємо поки ввімкнуть кнопку сигналізації
in temp, PIND
bst temp, 4
brts check_turn_on
; перед постановкою на сигналізацію необхідно зачекати 4.3 секунди
ldi Delay1, low(T_Alarm) ; встановлюємо очікування
ldi Delay2, high(T_Alarm)
ldi Delay3, byte3(T_Alarm)
rcall Delay
; вимикаємо світлодіод
cbi PORTB, 5
ldi d_mask, 0b00001111
; опитуємо давачі
check_davach:
in temp, PIND
and temp, d_mask
brne Alarm
in temp, PIND ; перевіряємо, чи сигналізація ввімкнена
bst temp, 4
brts check_turn_on ; якщо перемикач вимкнено переходимо на початок
; затримка T_Scan
ldi Delay1, low(T_Scan)
ldi Delay2, high(T_Scan)
ldi Delay3, byte3(T_Scan)
rcall Delay
rjmp check_davach
; один з здавачів спрацював
Alarm:
; очікуємо вимкнення сигналізації
ldi Delay1, low(T_Alarm)
ldi Delay2, high(T_Alarm)
ldi Delay3, byte3(T_Alarm)
rcall Delay
; перевіряємо , чи її вимкнено
in temp, PIND
bst temp, 4
brtc Blick_Alarm ; якщо не вимкнено ввімкнути серену
; вимикаємо світлодіод
sbi PORTB, 5
rjmp check_turn_on
Blick_Alarm:
; змінюємо стан світлодіода
sbic PINB, 5 ; if cleared skip next
cbi PORTB, 5
sbis PINB, 5 ; if set skip next
sbi PORTB, 5
; змінюємо стан серени
sbic PINB, 7 ; if cleared skip next
cbi PORTB, 7
sbis PINB, 7 ; if set skip next
sbi PORTB, 7
; затримка
ldi Delay1, low(T_Blick)
ldi Delay2, high(T_Blick)
ldi Delay3, byte3(T_Blick)
rcall Delay
rjmp Blick_Alarm
InitIO: ; ініціалізація портів вводу/виводу
cbi DDRD, 0
sbi PORTD, 0
cbi DDRD, 1
sbi PORTD, 1
cbi DDRD, 2
sbi PORTD, 2
cbi DDRD, 3
sbi PORTD, 3
cbi DDRD, 4 ; перемикач
sbi PORTD, 4
sbi DDRB, 5 ; світлодіод
sbi PORTB, 5
sbi DDRB, 7 ; серена
cbi PORTB, 7
ret
Delay:
subi Delay1, 1
sbci Delay2, 0
sbci Delay3, 0
brcc Delay
nop
ret
Розрахунки часових...